Electronic systems and circuits have made a significant contribution towards the advancement of modern society and are utilized in a number of applications to achieve advantageous results. Numerous electronic technologies such as digital computers, calculators, audio devices, video equipment, and telephone systems facilitate increased productivity and cost reduction in analyzing and communicating data, ideas and trends in most areas of business, science, education and entertainment. Realization of these results often involves processing and storage of significant amounts of information. It is usually important for the information to be communicated from storage mediums to processing units quickly in order to perform a variety of operations properly. However, storage medium or memories typically have an inverse relationship between storage capacity and access speed.
Information processing systems often include a hierarchy of different memory components varying from relatively large storage capacity with slow access capability to smaller storage capacity with relatively rapid access capability. Conventional computer systems typically include a bulk storage component (e.g., a hard disk memory system) and a main system memory (e.g., a random access memory). The bulk storage components such as a hard disk can typically store a relatively large amount of information but reading information from the hard disk or writing information to the hard disk takes a relatively long time. Attempts by a central processing unit to retrieve information directly from a hard disk would significantly slow the overall performance of operations and probably detrimentally impact the end use application results. While a main system memory such as a random access memory (RAM) typically supports faster read and write operations, RAM usually costs significantly more per storage unit (e.g., byte) and typically have relatively limited storage capacity. The limited storage capacity of a conventional main system memory RAM would significantly impact the applications that a computer system could run without a bulk storage component.
Computer systems typically attempt to address the memory size versus speed dilemma by dividing up storage activities between different types of memories in a hierarchical configuration and communicating information between different memory hierarchy components. Processors typically accesses information from a main system memory in relatively fast accesses of small pieces of information. The main system memory in turn exchanges relatively large pieces of information with a relatively slow bulk storage component such as a hard disk. Input and output memory access operations can be a key bottleneck in operating system performance.
The exchange of information within the hierarchy of memories is often referred to as disk caching. A cache is usually a memory that holds recently accessed data in a manner designed to seed up subsequent access to the same data. When data is read from or written to a hard disk a copy is also saved in the cache. The cache monitors disk reads to see if the required data is already in the cache. If the information is already in the cache then the information is returned immediately without attempting a disk read. The disk cache uses the system memory so a “cache hit” takes much less time to complete. However, because system memory is used, operating systems and applications have less memory available for other information.
A common feature of operating systems is a swap file. A swap file uses the hard disk as virtual memory. When more memory is requested than actually physically exists, sections of memory are written to the hard disk to simulate more memory. While the swap files do permit simulation of additional memory, the performance is still degraded in the sense the accessing the information takes longer as the program uses the much slower swap file to retrieve the information from the hard disk.